package com.example.algorithm.tree;


import java.io.File;

// 编程题：写一个函数，找到一个文件夹下所有文件，包括子文件夹
// (还是递归那套路，也不是很难)
public class FileFinder {

    //在演示使用自己封装的readfile方法
    public static void main(String[] args) {
        File file = new File("D:");  // 用路径创建一个文件对象。
        File[] files = file.listFiles();  //用文件对象自带的api listFiles()，来返回一个包含该文件对象下的文件/文件夹的的数组。
        readfile(files);
    }


    // 接收的参数是：一个装着文件夹的数组
    public static void readfile(File[] files) {

        // 这是结束条件。如果传进来的数组为空，也就是表示进行递归的文件夹里面虽然文件夹存在，但是，其实里面没文件了。
        if (files == null) {
            return;
        }

        for (File f : files) { //用的是增强for
            if (f.isFile()) { //判断是否是文件
                System.out.println(f.getName()); // 如果是文件，就不用递归了，直接打印出文件的名字来。这个不走递归，直接循环打印完文件，for就结束了，整个方法就结束了。
            } else if (f.isDirectory()) {  //如果是文件夹,那就递归使用readfile方法。
                readfile(f.listFiles());  //由于readfile是接收的文件/文价夹数组，所以，我们还是是把f.listFiles()传给它
            }
        }
    }
}
